package state;

/**
 * 状态模式主程序
 *
 * @author Liu Yicong
 * @date 2025/9/25
 */
public class StateClient {
	public static void main(String[] args) {
		OrderContext order = new OrderContext(); // 初始状态：PendingPaymentState

		// 1. 处理订单 (付款)
		order.handleProcess();
		// 此时状态: ShippedState

		System.out.println("当前状态: " + order.getCurrentState().getClass().getSimpleName());

		// 2. 再次处理订单 (签收)
		order.handleProcess();
		// 此时状态: DeliveredState

		System.out.println("当前状态: " + order.getCurrentState().getClass().getSimpleName());

		// 3. 在 DeliveredState 下尝试取消 (行为不同)
		order.handleCancel();

		// 4. 创建一个新订单，演示中途取消
		OrderContext newOrder = new OrderContext();
		newOrder.handleCancel(); // 在 PendingPaymentState 下取消
	}
}
